package com.molichuxing.gateway.bff.statistics.services;

import com.molichuxing.gateway.bff.statistics.entity.response.*;
import com.molichuxing.services.property.OrderTypeEnum;

import java.util.List;
import java.util.Map;

/**
 * @Author: renzhengyu
 * @Description:
 * @Date: Created in 16:09 2019/10/14
 * @Modified By:
 **/
public interface StatisticsBffService {

    /**
     * 首页订单统计
     *
     * @return
     */
    HomeOrderStatisticsVo getHomeOrderStatisticsVo();

    /**
     * 资源统计
     * @return
     */
    ResourceStatisticsVo getResourceStatisticsVo();


    /**
     * 违章统计
     * @return
     */
    ViolationCountVo getViolationStatisticsVo() throws Exception;

    /**
     * 待处理事务统计
     * @return
     */
    PendStatisticsVo getPendStatisticsVo();


    /**
     * 风险统计
     * @return
     */
    RiskStatisticsVo getRiskStatisticsVo();

    /**
     * 订单统计
     *
     * @param map
     * @return
     */
    PreviousOrderStatisticsVo getOrderStatisticsVo(Map<String, Object> map) throws Exception;

    /**
     * 订单地域分布统计
     *
     * @return
     * @throws Exception
     */
    public List<DistributionStatisticsVo> getOrderRegionalDistribution() throws Exception;

    /**
     * 车型销售统计
     *
     * @return
     * @throws Exception
     */
    public List<SalesStatisticsVo> getOrderVehicleSales() throws Exception;

    /**
     * 商品销售统计(专属、订阅)
     *
     * @param orderType 统计订单类型
     * @return
     * @throws Exception
     */
    public List<SalesStatisticsVo> getOrderGoodsSales(OrderTypeEnum orderType) throws Exception;

    /**
     * 订单用户画像
     *
     * @return
     * @throws Exception
     */
    public OrderUserPortraitVo getOrderUserPortrait() throws Exception;

    /**
     * 资产统计
     *
     * @return
     */
    public AssetCountVo getAssetCount();

}
